package tp.pr5.mv.instructions.io;

import tp.pr5.mv.Instruction;
import tp.pr5.mv.Memory;
import tp.pr5.mv.Opcode;
import tp.pr5.mv.OperandStack;
import tp.pr5.mv.ProgramCounter;
import tp.pr5.mv.inout.InMethod;
import tp.pr5.mv.inout.OutMethod;
import tp.pr5.mv.traps.MVTrap;

public class In extends Instruction {

	public In() {		
		op = Opcode.IN;
	}
	
	public void execute(OperandStack stack, Memory mem, ProgramCounter pc, InMethod inMethod, OutMethod outMethod) throws MVTrap {
		
		try {
			int i = inMethod.readChar();      // Leemos el siguiente carácter y si no se puede leer se lanza IOException.
			stack.push(i);                    // Si lo pudimos leer lo apilamos.
		}
		catch ( java.io.IOException ex ) {
			throw new MVTrap( ex, "Error de lectura.");
		}		
		
		
	}

	
	
	

	
	
}
